package java_0403_interface;

public class InterfacePolyArr {
    public static void main(String[] args) {
        //多态数组->接口类型数组
        Usb[] usbs = new Usb[2];
        usbs[0] = new Phone();
        usbs[1] = new Camera();

        /*
        1.	多态数组，演示一个案例：给Usb数组中,存放Phone和 相机对象，Phone类还有一个特有的方法call()。
        请遍历Usb数组，如果是Phone对象，除了调用Usb接口定义的方法外，还需要调用Phone特有方法call。
         */
        for (int i = 0; i < usbs.length; i++) {
            usbs[i].work();//动态绑定
            //要想使用call()方法，需要进行类型的向下转型
            if (usbs[i] instanceof Phone){
                ((Phone) usbs[i]).call();
            }
        }
    }
}

interface Usb {
    void work();
}

class Phone implements Usb {
    public void call() {
        System.out.println("手机可以打电话");
    }

    @Override
    public void work() {
        System.out.println("手机工作中");
    }
}

class Camera implements Usb {
    @Override
    public void work() {
        System.out.println("相机工作中");
    }
}
